package cn.hycat.leetcode.easy;

/**
 * @author 吕泽浩业
 * @version 1.0
 */
//符合下列属性的数组 arr 称为 山脉数组 ：
//        arr.length >= 3
//        存在 i（0 < i< arr.length - 1）使得：
//        arr[0] < arr[1] < ... arr[i-1] < arr[i]
//        arr[i] > arr[i+1] > ... > arr[arr.length - 1]
//        给你由整数组成的山脉数组 arr ，返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1]
//        > ... > arr[arr.length - 1] 的下标 i 。
//        示例 1：
//
//        输入：arr = [0,1,0]
//        输出：1
//        示例 2：
//
//        输入：arr = [0,2,1,0]
//        输出：1
//        示例 3：
//
//        输入：arr = [0,10,5,2]
//        输出：1
//        示例 4：
//
//        输入：arr = [3,4,5,1]
//        输出：2
public class L852山脉数组的峰顶索引 {
    public int peakIndexInMountainArray(int[] arr) {
        int l = 0, r = arr.length - 1;
        int ans = 0;
        while(l <= r) {
            int m = l + ((r - l) >> 1);
            //找第一个arr[m] > arr[m+1]的m数字   1 2 5 3 0  就是找5
            if(arr[m] > arr[m+1]) {
                r = m - 1;
                ans = m;
            } else {
                l = m + 1;
            }
        }
        return ans;
    }
}
